// 可以针对h5、微信、app等平台采用不同的请求公共路径
// #ifdef APP-PLUS || H5
import { getAppConfig } from '@/common/config/config'
const { BASE_URL } = getAppConfig();
// #endif

// 微信小程序
// #ifdef MP-WEIXIN
const  BASE_URL:string='http://123.60.33.164:9898';
// #endif
//请求超时时间设置
const timeout=5000

//采用一个函数或类封装api请求
const request=function(option){
	
	//获取用户传入的url+上公共的请求路径
	// const url =BASE_URL+option.url;
	const url ="http://localhost:8080"+option.url;
	
	// 添加提请求头 针对没有携带token和携带的token，进行处理
	let  header = option.header||{}
	const istoken=uni.getStorageSync("user_token")!=null?true:false;
	if(istoken){
		// 添加token 
		header.user_token = uni.getStorageSync("user_token");  
	}
	header.source=1;
	header.channel="h5";
	
	// 加载提示
	var loading = option.loading;
	// 如果有loading就显示loading
	if(loading){
		uni.showLoading(loading);
	}
	// 返回一个promise
	return new Promise((resolve,reject)=>{  
		// 发起一个request请求
		uni.request({
			url, //请求url
			method:option.method||"GET", //请求方法
			header, //请求头
			timeout,
			data:option.data||option.params, //请求数据
			success(res){
				// 成功返回结果
				if(res.statusCode===200){
					resolve(res.data)
					// 如果是101 没有权限
					if(res.data.code==101){
						uni.showToast({
							title: res.data.message,
							icon:'none'
						})
						uni.redirectTo({
							url: '/pages/login/index',
						})
					}
					if(res.data.code!=200&&res.data.code!=0){
						uni.showToast({
							icon:'none',
							title:res.data.message||'请求错误'
						})
					}
				} 
			},
			fail(err){
				// 失败返回失败结果
				uni.showToast({
					title: '请求失败',
					icon:'error'
				})
				console.error(err);
				reject(err)
			},
			complete(){
				// 完成 关闭loading
				if(loading){
					uni.hideLoading()
				}
			}
		})
	})
}

// 定义get简洁方法
request.get=function(url,config ={}){
	return  request({
		url,
		method:"GET",
		...config
	})
}

// 定义post简洁方法
request.post=function(url,data={},config = {}){
	return  request({
		url,
		method:"POST",
		data,
		...config
	})
}



request.put=function(url,data={},config = {}){
	return  request({
		url,
		method:"PUT",
		data,
		...config
	})
}
// 定义delete简洁方法
request.delete=function(url,data={},config = {}){
	return  request({
		url,
		method:"DELETE",
		data,
		...config
	})
}


// 导出请求
export default request;